package com.fiap.to;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "AM_CONTA")
public class ContaClienteTO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GenericGenerator(name = "seq_conta", strategy = "increment")
	@GeneratedValue(generator = "seq_conta")
	@Column(name = "ID_CONTA_CLIENTE")
	private int id_conta;
	@Column(length = 8, precision = 2)
	private double saldo;
	@Column(name = "DT_ATUALIZACAO")
	@Temporal(TemporalType.DATE)
	private Calendar dtAtualizacao;
	@OneToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
	@JoinColumn(name = "ID_CLIENTE")
	private ClienteTO cliente;

	@PrePersist
	private void executaAntesDePersistir() {
		System.out.println("Persistindo...");
	}

	public ContaClienteTO() {
		super();
		// TODO Auto-generated constructor stub
	}

	public ContaClienteTO(int id_conta, double saldo, Calendar dtAtualizacao,
			ClienteTO cliente) {
		super();
		this.id_conta = id_conta;
		this.saldo = saldo;
		this.dtAtualizacao = dtAtualizacao;
		this.cliente = cliente;
	}

	public int getId_conta() {
		return id_conta;
	}

	public void setId_conta(int id_conta) {
		this.id_conta = id_conta;
	}

	public double getSaldo() {
		return saldo;
	}

	public void setSaldo(double saldo) {
		this.saldo = saldo;
	}

	public Calendar getDtAtualizacao() {
		return dtAtualizacao;
	}

	public void setDtAtualizacao(Calendar dtAtualizacao) {
		this.dtAtualizacao = dtAtualizacao;
	}

	public ClienteTO getCliente() {
		return cliente;
	}

	public void setCliente(ClienteTO cliente) {
		this.cliente = cliente;
	}

}
